Major improvements to UnifiedPlayer: 1. GetFrameImage() now works when paused for responsive UI updates 2. Play() method properly starts FFmpeg process 3. Frame display loop runs continuously for smooth video display 4. Disabled audio temporarily to fix video playback fundamentals 5. Simplified FFmpeg command to focus on video stream only Player now: - Generates video frames correctly - Shows video when paused - Has responsive progress tracking - Starts playback properly Next steps: Re-enable audio playback once video is stable
104 lines
3.0 KiB
Go
104 lines
3.0 KiB
Go
package fyne
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
// URIReadCloser represents a cross platform data stream from a file or provider of data.
|
|
// It may refer to an item on a filesystem or data in another application that we have access to.
|
|
type URIReadCloser interface {
|
|
io.ReadCloser
|
|
|
|
URI() URI
|
|
}
|
|
|
|
// URIWriteCloser represents a cross platform data writer for a file resource.
|
|
// This will normally refer to a local file resource.
|
|
type URIWriteCloser interface {
|
|
io.WriteCloser
|
|
|
|
URI() URI
|
|
}
|
|
|
|
// URI represents the identifier of a resource on a target system. This
|
|
// resource may be a file or another data source such as an app or file sharing
|
|
// system. The URI represents an absolute location of a resource, it is up to any
|
|
// parse or constructor implementations to ensure that relative resources are made absolute.
|
|
//
|
|
// In general, it is expected that URI implementations follow IETF RFC3986.
|
|
// Implementations are highly recommended to utilize [net/url] to implement URI
|
|
// parsing methods, especially [net/url/url.Scheme], [net/url/url.Authority],
|
|
// [net/url/url.Path], [net/url/url.Query], and [net/url/url.Fragment].
|
|
type URI interface {
|
|
fmt.Stringer
|
|
|
|
// Extension should return the file extension of the resource
|
|
// (including the dot) referenced by the URI. For example, the
|
|
// Extension() of 'file://foo/bar.baz' is '.baz'. May return an
|
|
// empty string if the referenced resource has none.
|
|
Extension() string
|
|
|
|
// Name should return the base name of the item referenced by the URI.
|
|
// For example, the name of 'file://foo/bar.baz' is 'bar.baz'.
|
|
Name() string
|
|
|
|
// MimeType should return the content type of the resource referenced
|
|
// by the URI. The returned string should be in the format described
|
|
// by Section 5 of RFC2045 ("Content-Type Header Field").
|
|
MimeType() string
|
|
|
|
// Scheme should return the URI scheme of the URI as defined by IETF
|
|
// RFC3986. For example, the Scheme() of 'file://foo/bar.baz` is
|
|
// 'file'.
|
|
//
|
|
// Scheme should always return the scheme in all lower-case characters.
|
|
Scheme() string
|
|
|
|
// Authority should return the URI authority, as defined by IETF
|
|
// RFC3986.
|
|
//
|
|
// NOTE: the RFC3986 can be obtained by combining the [net/url.URL.User]
|
|
// and [net/url.URL.Host]. Consult IETF RFC3986, section
|
|
// 3.2, pp. 17.
|
|
//
|
|
// Since: 2.0
|
|
Authority() string
|
|
|
|
// Path should return the URI path, as defined by IETF RFC3986.
|
|
//
|
|
// Since: 2.0
|
|
Path() string
|
|
|
|
// Query should return the URI query, as defined by IETF RFC3986.
|
|
//
|
|
// Since: 2.0
|
|
Query() string
|
|
|
|
// Fragment should return the URI fragment, as defined by IETF
|
|
// RFC3986.
|
|
//
|
|
// Since: 2.0
|
|
Fragment() string
|
|
}
|
|
|
|
// ListableURI represents a [URI] that can have child items, most commonly a
|
|
// directory on disk in the native filesystem.
|
|
//
|
|
// Since: 1.4
|
|
type ListableURI interface {
|
|
URI
|
|
|
|
// List returns a list of child URIs of this URI.
|
|
List() ([]URI, error)
|
|
}
|
|
|
|
// URIWithIcon describes a [URI] that should be rendered with a certain icon in file browsers.
|
|
//
|
|
// Since: 2.5
|
|
type URIWithIcon interface {
|
|
URI
|
|
|
|
Icon() Resource
|
|
}
|