LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/modules/media_file - media_file.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 2 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
       3             :  *
       4             :  *  Use of this source code is governed by a BSD-style license
       5             :  *  that can be found in the LICENSE file in the root of the source
       6             :  *  tree. An additional intellectual property rights grant can be found
       7             :  *  in the file PATENTS.  All contributing project authors may
       8             :  *  be found in the AUTHORS file in the root of the source tree.
       9             :  */
      10             : 
      11             : #ifndef WEBRTC_MODULES_MEDIA_FILE_MEDIA_FILE_H_
      12             : #define WEBRTC_MODULES_MEDIA_FILE_MEDIA_FILE_H_
      13             : 
      14             : #include "webrtc/common_types.h"
      15             : #include "webrtc/modules/include/module.h"
      16             : #include "webrtc/modules/include/module_common_types.h"
      17             : #include "webrtc/modules/media_file/media_file_defines.h"
      18             : #include "webrtc/typedefs.h"
      19             : 
      20             : namespace webrtc {
      21             : class MediaFile : public Module
      22             : {
      23             : public:
      24             :     // Factory method. Constructor disabled. id is the identifier for the
      25             :     // MediaFile instance.
      26             :     static MediaFile* CreateMediaFile(const int32_t id);
      27             :     static void DestroyMediaFile(MediaFile* module);
      28             : 
      29             :     // Put 10-60ms of audio data from file into the audioBuffer depending on
      30             :     // codec frame size. dataLengthInBytes is both an input and output
      31             :     // parameter. As input parameter it indicates the size of audioBuffer.
      32             :     // As output parameter it indicates the number of bytes written to
      33             :     // audioBuffer.
      34             :     // Note: This API only play mono audio but can be used on file containing
      35             :     // audio with more channels (in which case the audio will be converted to
      36             :     // mono).
      37             :     virtual int32_t PlayoutAudioData(
      38             :         int8_t* audioBuffer,
      39             :         size_t& dataLengthInBytes) = 0;
      40             : 
      41             :     // Put 10-60ms, depending on codec frame size, of audio data from file into
      42             :     // audioBufferLeft and audioBufferRight. The buffers contain the left and
      43             :     // right channel of played out stereo audio.
      44             :     // dataLengthInBytes is both an input and output parameter. As input
      45             :     // parameter it indicates the size of both audioBufferLeft and
      46             :     // audioBufferRight. As output parameter it indicates the number of bytes
      47             :     // written to both audio buffers.
      48             :     // Note: This API can only be successfully called for WAV files with stereo
      49             :     // audio.
      50             :     virtual int32_t PlayoutStereoData(
      51             :         int8_t* audioBufferLeft,
      52             :         int8_t* audioBufferRight,
      53             :         size_t& dataLengthInBytes) = 0;
      54             : 
      55             :     // Open the file specified by fileName (relative path is allowed) for
      56             :     // reading. FileCallback::PlayNotification(..) will be called after
      57             :     // notificationTimeMs of the file has been played if notificationTimeMs is
      58             :     // greater than zero. If loop is true the file will be played until
      59             :     // StopPlaying() is called. When end of file is reached the file is read
      60             :     // from the start. format specifies the type of file fileName refers to.
      61             :     // codecInst specifies the encoding of the audio data. Note that
      62             :     // file formats that contain this information (like WAV files) don't need to
      63             :     // provide a non-NULL codecInst. startPointMs and stopPointMs, unless zero,
      64             :     // specify what part of the file should be read. From startPointMs ms to
      65             :     // stopPointMs ms.
      66             :     // Note: codecInst.channels should be set to 2 for stereo (and 1 for
      67             :     // mono). Stereo audio is only supported for WAV files.
      68             :     virtual int32_t StartPlayingAudioFile(
      69             :         const char* fileName,
      70             :         const uint32_t notificationTimeMs = 0,
      71             :         const bool loop                         = false,
      72             :         const FileFormats format                = kFileFormatPcm16kHzFile,
      73             :         const CodecInst* codecInst              = NULL,
      74             :         const uint32_t startPointMs       = 0,
      75             :         const uint32_t stopPointMs        = 0) = 0;
      76             : 
      77             :     // Prepare for playing audio from stream.
      78             :     // FileCallback::PlayNotification(..) will be called after
      79             :     // notificationTimeMs of the file has been played if notificationTimeMs is
      80             :     // greater than zero. format specifies the type of file fileName refers to.
      81             :     // codecInst specifies the encoding of the audio data. Note that
      82             :     // file formats that contain this information (like WAV files) don't need to
      83             :     // provide a non-NULL codecInst. startPointMs and stopPointMs, unless zero,
      84             :     // specify what part of the file should be read. From startPointMs ms to
      85             :     // stopPointMs ms.
      86             :     // Note: codecInst.channels should be set to 2 for stereo (and 1 for
      87             :     // mono). Stereo audio is only supported for WAV files.
      88             :     virtual int32_t StartPlayingAudioStream(
      89             :         InStream& stream,
      90             :         const uint32_t notificationTimeMs = 0,
      91             :         const FileFormats    format             = kFileFormatPcm16kHzFile,
      92             :         const CodecInst*     codecInst          = NULL,
      93             :         const uint32_t startPointMs       = 0,
      94             :         const uint32_t stopPointMs        = 0) = 0;
      95             : 
      96             :     // Stop playing from file or stream.
      97             :     virtual int32_t StopPlaying() = 0;
      98             : 
      99             :     // Return true if playing.
     100             :     virtual bool IsPlaying() = 0;
     101             : 
     102             : 
     103             :     // Set durationMs to the number of ms that has been played from file.
     104             :     virtual int32_t PlayoutPositionMs(
     105             :         uint32_t& durationMs) const = 0;
     106             : 
     107             :     // Write one audio frame, i.e. the bufferLength first bytes of audioBuffer,
     108             :     // to file. The audio frame size is determined by the codecInst.pacsize
     109             :     // parameter of the last sucessfull StartRecordingAudioFile(..) call.
     110             :     // Note: bufferLength must be exactly one frame.
     111             :     virtual int32_t IncomingAudioData(
     112             :         const int8_t* audioBuffer,
     113             :         const size_t bufferLength) = 0;
     114             : 
     115             :     // Open/creates file specified by fileName for writing (relative path is
     116             :     // allowed). FileCallback::RecordNotification(..) will be called after
     117             :     // notificationTimeMs of audio data has been recorded if
     118             :     // notificationTimeMs is greater than zero.
     119             :     // format specifies the type of file that should be created/opened.
     120             :     // codecInst specifies the encoding of the audio data. maxSizeBytes
     121             :     // specifies the number of bytes allowed to be written to file if it is
     122             :     // greater than zero.
     123             :     // Note: codecInst.channels should be set to 2 for stereo (and 1 for
     124             :     // mono). Stereo is only supported for WAV files.
     125             :     virtual int32_t StartRecordingAudioFile(
     126             :         const char*  fileName,
     127             :         const FileFormats    format,
     128             :         const CodecInst&     codecInst,
     129             :         const uint32_t notificationTimeMs = 0,
     130             :         const uint32_t maxSizeBytes       = 0) = 0;
     131             : 
     132             :     // Prepare for recording audio to stream.
     133             :     // FileCallback::RecordNotification(..) will be called after
     134             :     // notificationTimeMs of audio data has been recorded if
     135             :     // notificationTimeMs is greater than zero.
     136             :     // format specifies the type of file that stream should correspond to.
     137             :     // codecInst specifies the encoding of the audio data.
     138             :     // Note: codecInst.channels should be set to 2 for stereo (and 1 for
     139             :     // mono). Stereo is only supported for WAV files.
     140             :     virtual int32_t StartRecordingAudioStream(
     141             :         OutStream&           stream,
     142             :         const FileFormats    format,
     143             :         const CodecInst&     codecInst,
     144             :         const uint32_t notificationTimeMs = 0) = 0;
     145             : 
     146             :     // Stop recording to file or stream.
     147             :     virtual int32_t StopRecording() = 0;
     148             : 
     149             :     // Return true if recording.
     150             :     virtual bool IsRecording() = 0;
     151             : 
     152             :     // Set durationMs to the number of ms that has been recorded to file.
     153             :     virtual int32_t RecordDurationMs(uint32_t& durationMs) = 0;
     154             : 
     155             :     // Return true if recording or playing is stereo.
     156             :     virtual bool IsStereo() = 0;
     157             : 
     158             :     // Register callback to receive media file related notifications. Disables
     159             :     // callbacks if callback is NULL.
     160             :     virtual int32_t SetModuleFileCallback(FileCallback* callback) = 0;
     161             : 
     162             :     // Set durationMs to the size of the file (in ms) specified by fileName.
     163             :     // format specifies the type of file fileName refers to. freqInHz specifies
     164             :     // the sampling frequency of the file.
     165             :     virtual int32_t FileDurationMs(
     166             :         const char*  fileName,
     167             :         uint32_t&      durationMs,
     168             :         const FileFormats    format,
     169             :         const uint32_t freqInHz = 16000) = 0;
     170             : 
     171             :     // Update codecInst according to the current audio codec being used for
     172             :     // reading or writing.
     173             :     virtual int32_t codec_info(CodecInst& codecInst) const = 0;
     174             : 
     175             : protected:
     176           0 :     MediaFile() {}
     177           0 :     virtual ~MediaFile() {}
     178             : };
     179             : }  // namespace webrtc
     180             : #endif // WEBRTC_MODULES_MEDIA_FILE_MEDIA_FILE_H_

Generated by: LCOV version 1.13