#pragma once
#include "ggml.h"
#include <vector>
struct ggml_context;
struct ggml_tensor;
struct ggml_cgraph;
namespace transcribe::whisper {
struct WhisperHParams;
struct WhisperWeights;
struct EncoderDumps {
ggml_tensor * mel_in = nullptr;
ggml_tensor * conv1_out = nullptr;
ggml_tensor * conv2_out = nullptr;
ggml_tensor * pos_emb = nullptr;
ggml_tensor * embed_out = nullptr;
ggml_tensor * block0_out = nullptr;
ggml_tensor * block_last_out = nullptr;
ggml_tensor * final_out = nullptr;
std::vector<ggml_tensor *> block_outs;
};
struct EncoderBuild {
ggml_tensor * mel_in = nullptr;
ggml_tensor * out = nullptr;
EncoderDumps dumps{};
ggml_cgraph * graph = nullptr;
};
EncoderBuild build_encoder_graph(ggml_context * compute_ctx,
const WhisperWeights & weights,
const WhisperHParams & hp,
int n_mel_frames,
bool use_flash = true,
const char * backend_name = "");
}