当前位置: 首页>>代码示例>>C++>>正文


C++ nsRefPtr::Data方法代码示例

本文整理汇总了C++中nsRefPtr::Data方法的典型用法代码示例。如果您正苦于以下问题:C++ nsRefPtr::Data方法的具体用法?C++ nsRefPtr::Data怎么用?C++ nsRefPtr::Data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在nsRefPtr的用法示例。


在下文中一共展示了nsRefPtr::Data方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

void
nsSpeechTask::SendAudioImpl(nsRefPtr<mozilla::SharedBuffer>& aSamples, uint32_t aDataLen)
{
  if (aDataLen == 0) {
    mStream->EndAllTrackAndFinish();
    return;
  }

  AudioSegment segment;
  nsAutoTArray<const int16_t*, 1> channelData;
  channelData.AppendElement(static_cast<int16_t*>(aSamples->Data()));
  segment.AppendFrames(aSamples.forget(), channelData, aDataLen);
  mStream->AppendToTrack(1, &segment);
  mStream->AdvanceKnownTracksTime(STREAM_TIME_MAX);
}
开发者ID:Jar-win,项目名称:Waterfox,代码行数:15,代码来源:nsSpeechTask.cpp

示例2: holder

bool
IntelWebMVideoDecoder::Demux(nsRefPtr<VP8Sample>& aSample, bool* aEOS)
{
    nsRefPtr<NesteggPacketHolder> holder(mReader->NextPacket(WebMReader::VIDEO));
    if (!holder) {
        return false;
    }

    nestegg_packet* packet = holder->Packet();
    unsigned int track = 0;
    int r = nestegg_packet_track(packet, &track);
    if (r == -1) {
        return false;
    }

    unsigned int count = 0;
    r = nestegg_packet_count(packet, &count);
    if (r == -1) {
        return false;
    }

    if (count > 1) {
        NS_WARNING("Packet contains more than one video frame");
        return false;
    }

    int64_t tstamp = holder->Timestamp();

    // The end time of this frame is the start time of the next frame.  Fetch
    // the timestamp of the next packet for this track.  If we've reached the
    // end of the resource, use the file's duration as the end time of this
    // video frame.
    int64_t next_tstamp = 0;
    nsRefPtr<NesteggPacketHolder> next_holder(mReader->NextPacket(WebMReader::VIDEO));
    if (next_holder) {
        next_tstamp = holder->Timestamp();
        mReader->PushVideoPacket(next_holder);
    } else {
        next_tstamp = tstamp;
        next_tstamp += tstamp - mReader->GetLastVideoFrameTime();
    }
    mReader->SetLastVideoFrameTime(tstamp);

    unsigned char* data;
    size_t length;
    r = nestegg_packet_data(packet, 0, &data, &length);
    if (r == -1) {
        return false;
    }

    vpx_codec_stream_info_t si;
    PodZero(&si);
    si.sz = sizeof(si);
    if (mReader->GetVideoCodec() == NESTEGG_CODEC_VP8) {
        vpx_codec_peek_stream_info(vpx_codec_vp8_dx(), data, length, &si);
    } else if (mReader->GetVideoCodec() == NESTEGG_CODEC_VP9) {
        vpx_codec_peek_stream_info(vpx_codec_vp9_dx(), data, length, &si);
    }

    MOZ_ASSERT(mPlatform && mMediaDataDecoder);

    aSample = new VP8Sample(tstamp,
                            next_tstamp - tstamp,
                            0,
                            data,
                            length,
                            si.is_kf);
    if (!aSample->Data()) {
        return false;
    }

    return true;
}
开发者ID:Jar-win,项目名称:Waterfox,代码行数:73,代码来源:IntelWebMVideoDecoder.cpp


注:本文中的nsRefPtr::Data方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。