# Release Proposal: HTTP Segment Ingress for go-livepeer
Key problems:
* How do we return multiple files per request?
* How much of the existing transcoding pipeline should be reused?
## 1. Request: HTTP POST - response tarball
Client sends a video segment into go-livepeer; go-livepeer responds with a tar archive containing the transcoded video segments.
Pros:
* Minimal client complexity, supported everywhere
* Completely stateless, each connection completely independent
Cons:
* High latency
* Output segments provided in serial instead of parallel
## 2. Request HTTP POST - response HTTP/2 Push
Client POSTs a video segment into go-livepeer; go-livepeer responds with each segment in an HTTP/2 Push
Pros:
* Consistent with recently-announced LHLS standard
* Stateless (state limited to HTTP connection)
* Output segments streamed in parallel
* We're already using HTTP/2 for stuff
Cons:
* Moderately-complex client, not all HTTP libraries will support HTTP2
* Not supported by all proxies/load balancers
## 3. Request HTTP POST - response HLS pull
Client POSTs
Pros:
* Existing go-livepeer output logic can be reused
* Output segments can be pulled in parallel
Cons:
* Requires stateful channel between media server and broadcaster
## 4. Websockets
Client initiates a websocket connection, then input and output segments are pushed back and forth
Pros:
* Well-supported in all major languages
* Output segments streamed in parallel
Cons:
* Completely non-standard, new protocol we're inventing for this
* Very complex client implementation