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)
Core Graveyard
Plug-ins
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.
Comment 1•16 years ago
|
||
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
Updated•16 years ago
|
Component: General → Plug-ins
QA Contact: general → plugins
Comment 2•8 years ago
|
||
Resolving old bugs which are likely not relevant any more, since NPAPI plugins are deprecated.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INCOMPLETE
Updated•3 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•