blob: 24320e775ca02227e920a82c9999d2ea06f5efbf [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_MEDIA_AUDIO_AUDIO_CORE_TESTING_PACKET_FACTORY_H_
#define SRC_MEDIA_AUDIO_AUDIO_CORE_TESTING_PACKET_FACTORY_H_
#include <lib/async/dispatcher.h>
#include <lib/fit/function.h>
#include <lib/zx/time.h>
#include <fbl/ref_ptr.h>
#include "src/media/audio/audio_core/packet.h"
#include "src/media/audio/audio_core/utils.h"
#include "src/media/audio/lib/format/format.h"
namespace media::audio::testing {
// Helper class for creating packets for testing.
class PacketFactory {
public:
PacketFactory(async_dispatcher_t* dispatcher, const Format& format, size_t vmo_size);
fbl::RefPtr<Packet> CreatePacket(float val, zx::duration duration = zx::msec(1),
fit::closure callback = nullptr);
const Format& format() const { return format_; }
void SeekToFrame(int64_t frame_num) { next_pts_ = Fixed(frame_num); }
private:
Packet::Allocator allocator_{1, true};
async_dispatcher_t* dispatcher_;
Format format_;
fbl::RefPtr<RefCountedVmoMapper> vmo_ref_;
size_t buffer_offset_ = 0;
Fixed next_pts_{0};
};
} // namespace media::audio::testing
#endif // SRC_MEDIA_AUDIO_AUDIO_CORE_TESTING_PACKET_FACTORY_H_