Closed Bug 492457 Opened 16 years ago Closed 8 years ago

Implement negative offset of NPByteRange in NPN_RequestRead

Categories

(Core Graveyard :: Plug-ins, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: andy.rivas, Unassigned)

Details

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729) Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729) The Silverlight team has some questions regarding ByteRequest on Large files. Namely, is seeking on files larger than 2GB supported on FireFox. 1) Does FireFox support ByteRequest for big media files which are larger than 2GB. Is the BRR header setting ( when offset is negative value) in HTTP request correct? 2) need Clear definition of data fields and method parameters when offset is bigger than 2GB: typedef struct _NPByteRange { int32 offset; /* negative offset means from the end */ uint32 length; struct _NPByteRange* next; } NPByteRange; and int32 PluginObject::Write(__in NPStream *stream, __in int32 offset, __in int32 len, __in_bcount(len) void *buffer) { From NPAPI's code comments, it seems like it specially interprets the negative offset as the offset from the end of the media file, we've made the change to adjust the negative offset so that it is from the end of the media file, and try this again, still, the server responds with data starting from position 0. For example: IE - notice the range that is returned from the server. Frame: Number = 44945, Captured Frame Length = 458, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0A-42-B0-54-00],SourceAddress:[00-0F-FE-EA-3E-B9] + Ipv4: Src = 157.59.129.40, Dest = 10.200.106.55, Next Protocol = ESP, Packet ID = 25267, Total IP Length = 444 + Esp: Next Protocol = TCP, SPI = 0xd2fdbe8, Seq = 0x3c76 + Tcp: Flags=...AP..., SrcPort=63723, DstPort=HTTP(80), PayloadLen=379, Seq=3911281010 - 3911281389, Ack=3952680957, Win=16502 (scale factor 0x2) = 66008 - Http: Request, GET /media/private/Terminator3-HD-VC1.wmv Command: GET + URI: /media/private/Terminator3-HD-VC1.wmv ProtocolVersion: HTTP/1.1 Accept: */* Range: bytes=3352903680-3352956410 UA-CPU: x86 Accept-Encoding: gzip, deflate UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) Host: jolt-media Connection: Keep-Alive HeaderEnd: CRLF Frame: Number = 44946, Captured Frame Length = 1510, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0F-FE-EA-3E-B9],SourceAddress:[00-0A-42-B0-54-00] + Ipv4: Src = 10.200.106.55, Dest = 157.59.129.40, Next Protocol = ESP, Packet ID = 22638, Total IP Length = 1496 + Esp: Next Protocol = TCP, SPI = 0xc5e92103, Seq = 0x79e3 + Tcp: Flags=...A...., SrcPort=HTTP(80), DstPort=63723, PayloadLen=1431, Seq=3952680957 - 3952682388, Ack=3911281389, Win=65156 (scale factor 0x0) = 65156 - Http: Response, HTTP/1.1, Status Code = 206, URL: /media/private/Terminator3-HD-VC1.wmv ProtocolVersion: HTTP/1.1 StatusCode: 206, Partial content Reason: Partial Content ContentLength: 52730 ContentType: video/x-ms-wmv Content-Range: bytes 3352903680-3352956409/3352956410 Last-Modified: Wed, 23 May 2007 05:24:08 GMT Accept-Ranges: bytes ETag: "e9c18a96fa9cc71:790" Server: Microsoft-IIS/6.0 XPoweredBy: ASP.NET Date: Wed, 08 Apr 2009 16:18:01 GMT HeaderEnd: CRLF + payload: HttpContentType = video/x-ms-wmv On Firefox. The first example includes no change our end to interpret the negative value offset and the second we try to interpret the negative offset: On FF ( without any adjustment): Frame: Number = 40277, Captured Frame Length = 538, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0A-42-B0-54-00],SourceAddress:[00-0F-FE-EA-3E-B9] + Ipv4: Src = 157.59.129.40, Dest = 10.200.106.55, Next Protocol = ESP, Packet ID = 10674, Total IP Length = 524 + Esp: Next Protocol = TCP, SPI = 0x1b5cb450, Seq = 0x20b5 + Tcp: Flags=...AP..., SrcPort=58069, DstPort=HTTP(80), PayloadLen=459, Seq=2761034666 - 2761035125, Ack=1408626230, Win=16502 (scale factor 0x2) = 66008 - Http: Request, GET /media/private/Terminator3-HD-VC1.wmv Command: GET + URI: /media/private/Terminator3-HD-VC1.wmv ProtocolVersion: HTTP/1.1 Host: jolt-media UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Range: bytes=-942063616--942010887 HeaderEnd: CRLF Frame: Number = 40278, Captured Frame Length = 1510, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0F-FE-EA-3E-B9],SourceAddress:[00-0A-42-B0-54-00] + Ipv4: Src = 10.200.106.55, Dest = 157.59.129.40, Next Protocol = ESP, Packet ID = 13297, Total IP Length = 1496 + Esp: Next Protocol = TCP, SPI = 0xcf6c1907, Seq = 0x7a1d + Tcp: Flags=...A...., SrcPort=HTTP(80), DstPort=58069, PayloadLen=1431, Seq=1408626230 - 1408627661, Ack=2761035125, Win=65076 (scale factor 0x0) = 65076 - Http: Response, HTTP/1.1, Status Code = 200, URL: /media/private/Terminator3-HD-VC1.wmv ProtocolVersion: HTTP/1.1 StatusCode: 200, Ok Reason: OK ContentLength: 3352956410 ContentType: video/x-ms-wmv Last-Modified: Wed, 23 May 2007 05:24:08 GMT Accept-Ranges: bytes ETag: "e9c18a96fa9cc71:79a" Server: Microsoft-IIS/6.0 XPoweredBy: ASP.NET Date: Wed, 08 Apr 2009 23:57:32 GMT HeaderEnd: CRLF + payload: HttpContentType = video/x-ms-wmv On FF ( with the offset adjustment so that negative offset means starting from the end of the media file): Frame: Number = 7, Captured Frame Length = 526, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0A-42-B0-54-00],SourceAddress:[00-0F-FE-EA-3E-B9] + Ipv4: Src = 157.59.129.40, Dest = 10.200.106.55, Next Protocol = ESP, Packet ID = 28015, Total IP Length = 512 + Esp: Next Protocol = TCP, SPI = 0x7651a285, Seq = 0x4ed + Tcp: Flags=...AP..., SrcPort=52908, DstPort=HTTP(80), PayloadLen=447, Seq=220398627 - 220399074, Ack=3426747896, Win=16502 (scale factor 0x2) = 66008 - Http: Request, GET /media/private/Terminator3-HD-VC1.wmv Command: GET + URI: /media/private/Terminator3-HD-VC1.wmv ProtocolVersion: HTTP/1.1 Host: jolt-media UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Range: bytes=-52730--1 HeaderEnd: CRLF Frame: Number = 8, Captured Frame Length = 1510, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-0F-FE-EA-3E-B9],SourceAddress:[00-0A-42-B0-54-00] + Ipv4: Src = 10.200.106.55, Dest = 157.59.129.40, Next Protocol = ESP, Packet ID = 7803, Total IP Length = 1496 + Esp: Next Protocol = TCP, SPI = 0x33057e4d, Seq = 0x1022 + Tcp: Flags=...A...., SrcPort=HTTP(80), DstPort=52908, PayloadLen=1431, Seq=3426747896 - 3426749327, Ack=220399074, Win=65088 (scale factor 0x0) = 65088 - Http: Response, HTTP/1.1, Status Code = 200, URL: /media/private/Terminator3-HD-VC1.wmv ProtocolVersion: HTTP/1.1 StatusCode: 200, Ok Reason: OK ContentLength: 3352956410 ContentType: video/x-ms-wmv Last-Modified: Wed, 23 May 2007 05:24:08 GMT Accept-Ranges: bytes ETag: "e9c18a96fa9cc71:79a" Server: Microsoft-IIS/6.0 XPoweredBy: ASP.NET Date: Thu, 09 Apr 2009 01:26:02 GMT HeaderEnd: CRLF + payload: HttpContentType = video/x-ms-wmv Reproducible: Always Steps to Reproduce: 1. Play a large media file (larger than 2GB) 2. Try BRR seek to the end of file Actual Results: Firefox never returns the correct location and we can never resume play of the large media file. Expected Results: Able to perform a seek on large files Current work around for customers using files larger than 2GB we are recommending they use SmoothStreaming or WMS Streaming.
A negative offset value is currently not implemented as meaning an offset from the end of the stream. It will be sent as a negative range request (which makes it an invalid HTTP request if I'm correct). http://mxr.mozilla.org/mozilla-central/source/modules/plugin/base/src/nsPluginHostImpl.cpp?mark=1363-1366#1363 I guess Chrome suffers from the same issue (did you test?): http://www.google.com/codesearch/p?hl=en#h0RrPvyPu-c/webkit/glue/plugins/plugin_instance.cc&q=RequestRead%20package:chromium.org&l=472 And apparently Webkit doesn't implement it (not sure if this is the code used in Safari): http://www.google.com/codesearch/p?hl=en#N6Qhr5kJSgQ/WebCore/plugins/npapi.cpp&q=NPN_RequestRead&exact_package=git://android.git.kernel.org/platform/external/webkit.git&l=67
Status: UNCONFIRMED → NEW
Ever confirmed: true
Product: Firefox → Core
QA Contact: general → general
Hardware: x86 → All
Summary: BRR is not completed on FF:3.0.7 for Very Large Files - Silverlight → Implement negative offset of NPByteRange in NPN_RequestRead
Version: unspecified → Trunk
Component: General → Plug-ins
QA Contact: general → plugins
Resolving old bugs which are likely not relevant any more, since NPAPI plugins are deprecated.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INCOMPLETE
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.