Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCSMB-14: Stereo television #29

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

WindClan
Copy link

@WindClan WindClan commented Mar 30, 2024

My abandoned TV format
submitting it because i dont want it to go to waste as its cool

Copy link
Member

@EmmaKnijn EmmaKnijn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This currently feels like a very rough sketch of a standard. I however do like the idea of it.

*Last updated: 2024-03-30*

## Server:
Videos should either be in BIMG but other formats do not break compliance as long as they are marked in "type" to avoid issues with clients and there is an open-source encoder and decoder
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is too loose to even be considered a standard


an example of this would be [PBB](https://raw.githubusercontent.com/craftytv/pigutv/main/pbbconverter.py) which is supported in the example server

Broadcasts in BIMG should only use the default CraftOS pallete
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this limit in place? If there's a good reason, sure, but this seems like an unneeded limitation

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issues with 20fps video mainly
it works if you dont set the pallete though


Broadcasts in BIMG should only use the default CraftOS pallete

Each frame of video should have enough audio to last the entire frame and no more
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And how about it being shorter than the frame, is that compliant. Also, "should" shouldnt be used here

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And how about it being shorter than the frame, is that compliant.

No, i forgot to mention that


Each packet sent from the server most have "protocol" set to "stereovideo"

Each packet should have metadata for the TV broadcast
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the available metadata fields and its types?


Each packet should have metadata for the TV broadcast

An optional feature that packets can have is subtitles
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How would this be implemented?


Clients should be able to play stereo audio in-sync with the frames

Clients should be able to display subtitles
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be "MAY" and there should be a format noted above


Displaying metadata attached to broadcasts is optional

If the client supports multiple palletes, the client should be able to switch back to default pallete before changing broadcasts
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wait so why is the single pallete limitation there then?

{
protocol = "stereovideo", -- Always stereo video
type = broadcastType, -- Image format (BIMG, etc.) SHOULD BE ALL LOWERCASE
audio = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we want to create "similar" protocols, consider looking at CCSMB-5's way of implementing channels,
audio[1] would be left,
audio[2] would be right,
audio[3-8] would be self assigned

left = leftbuffer, -- Decoded PCM, left channel
right = rightbuffer -- Decoded PCM, right channel
},
video = currentFrame, -- Either a frame of PBB or BIMG
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should there be a default size or set of sizes? If so, which sizes.

right = rightbuffer -- Decoded PCM, right channel
},
video = currentFrame, -- Either a frame of PBB or BIMG
subtitle = subtitle, --Subtitles is avaliable
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about framerate, how fast should the video be played back? Should it be inferred from the size of the frame data? If so, which way?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Framerate is determined by how fast the packets are received
Ive tested with 20fps and 1fps

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants