Files
UsdLayerManager/src/utils/FileDialog.h
T
indigo 0538dd3243 Add playblast: viewport capture to H.264 MP4 via libavcodec
- TimelinePanel: Playblast button opens modal with output dir (native
  folder picker via IFileOpenDialog), custom resolution (HD/FHD/4K
  presets), frame range, and movie export toggle
- UsdSceneRenderer: CaptureFrame() reads pixels from resolved MSAA FBO;
  Render() stores last dimensions for off-screen re-render at capture res
- MovieEncoder: streams RGBA frames directly into MP4 using libavcodec/
  libswscale (H.264, tries libx264 → nvenc → qsv → amf → openh264)
- Application: CapturePlayblastFrame() re-renders at capture resolution
  each frame; opens/writes/closes MovieEncoder inline with the render loop
- FileDialog: BrowseFolder() using Vista-style IFileOpenDialog (COM)
- CMake: FindFFmpeg.cmake locates prebuilt BtbN GPL shared package in
  third_party/ffmpeg; links and copies DLLs for main and test targets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 09:36:30 +08:00

36 lines
920 B
C++

#pragma once
#include <string>
#include <Windows.h>
namespace UsdLayerManager {
class FileDialog {
public:
// Open file dialog
static std::string OpenFile(
const char* filter = "USD Files (*.usd;*.usda;*.usdc)\0*.usd;*.usda;*.usdc\0All Files (*.*)\0*.*\0",
const char* title = "Open USD File",
HWND owner = nullptr
);
// Save file dialog
static std::string SaveFile(
const char* filter = "USD Files (*.usd;*.usda;*.usdc)\0*.usd;*.usda;*.usdc\0All Files (*.*)\0*.*\0",
const char* title = "Save USD File",
const char* defaultExt = "usd",
HWND owner = nullptr
);
// Folder picker (Vista-style IFileOpenDialog)
static std::string BrowseFolder(
const char* title = "Select Output Folder",
HWND owner = nullptr
);
private:
static const int MAX_PATH_LENGTH = 4096;
};
} // namespace UsdLayerManager