Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
dawproject_import.hpp File Reference

Bounded import of the documented DAWproject arrangement subset. More...

#include <pulp/runtime/result.hpp>
#include <pulp/timeline/model.hpp>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <optional>
#include <span>
#include <string>
#include <string_view>
#include <vector>

Go to the source code of this file.

Classes

struct  pulp::timeline::DawProjectImportError
 Diagnostic returned when an import rejects the whole document. More...
struct  pulp::timeline::detail::DawProjectMediaViewResolver
struct  pulp::timeline::DawProjectImportLimits
 Hard resource ceilings for one import. More...

Namespaces

namespace  pulp
namespace  pulp::timeline
namespace  pulp::timeline::detail

Typedefs

using pulp::timeline::DawProjectMediaResolver
 Resolves a safe package-relative path to complete media bytes.

Enumerations

enum class  pulp::timeline::DawProjectImportErrorCode : std::uint8_t {
  pulp::timeline::DawProjectImportErrorCode::ParseError , pulp::timeline::DawProjectImportErrorCode::MissingRoot , pulp::timeline::DawProjectImportErrorCode::UnsupportedVersion , pulp::timeline::DawProjectImportErrorCode::UnsupportedFeature ,
  pulp::timeline::DawProjectImportErrorCode::MissingAttribute , pulp::timeline::DawProjectImportErrorCode::InvalidValue , pulp::timeline::DawProjectImportErrorCode::MissingMediaBytes , pulp::timeline::DawProjectImportErrorCode::DuplicateTrackId ,
  pulp::timeline::DawProjectImportErrorCode::DanglingTrackReference , pulp::timeline::DawProjectImportErrorCode::ModelRejected , pulp::timeline::DawProjectImportErrorCode::LimitExceeded
}
 Stable category for a DAWproject import failure. More...

Functions

runtime::Result< Project, DawProjectImportError > pulp::timeline::import_dawproject_xml (std::string_view project_xml)
 Parses a DAWproject project.xml document without resolving audio media.
runtime::Result< Project, DawProjectImportError > pulp::timeline::import_dawproject_xml (std::string_view project_xml, DawProjectMediaResolver media_resolver)
 Parses a DAWproject project.xml document using media_resolver.
runtime::Result< Project, DawProjectImportError > pulp::timeline::import_dawproject_xml (std::string_view project_xml, DawProjectMediaResolver media_resolver, const DawProjectImportLimits &limits)
 Parses a DAWproject project.xml document under explicit resource limits.
runtime::Result< Project, DawProjectImportError > pulp::timeline::detail::import_dawproject_xml_view (std::string_view project_xml, DawProjectMediaViewResolver media_resolver, const DawProjectImportLimits &limits)

Detailed Description

Bounded import of the documented DAWproject arrangement subset.

DAWproject is an open, DAW-neutral XML format; a .dawproject file is a ZIP whose project.xml entry carries the arrangement. This importer consumes the XML text and asks a caller-supplied resolver for referenced package media so every returned MediaAsset is sealed to the SHA-256 of its actual bytes.

The accepted subset is a major-version-1 Project, one initial tempo and meter, flat tracks, beat-timed arrangement lanes, note clips, and audio clips with package-relative media. Everything outside that subset fails closed rather than being dropped.

Beats are quarter notes; clip and note positions convert to canonical ticks. Audio paths survive only as PackageRelative locator hints; resolved bytes determine the durable ContentHash.